home *** CD-ROM | disk | FTP | other *** search
- {Reading in a thedraw image :)
- }
- Procedure UNCRUNCH (Var Addr1,Addr2; BlkLen:Integer);
-
- begin
- Inline (
- $1E/ { PUSH DS ;Save data segment.}
- $C5/$B6/ADDR1/ { LDS SI,[BP+Addr1] ;Source Address}
- $C4/$BE/ADDR2/ { LES DI,[BP+Addr2] ;Destination Addr}
- $8B/$8E/BLKLEN/ { MOV CX,[BP+BlkLen] ;Length of block}
- $E3/$5B/ { JCXZ Done}
- $8B/$D7/ { MOV DX,DI ;Save X coordinate For
- later.}
- $33/$C0/ { xor AX,AX ;Set Current attributes.}
- $FC/ { CLD}
- $AC/ {LOOPA: LODSB ;Get next Character.}
- $3C/$20/ { CMP AL,32 ;if a control Character,
- jump.}
- $72/$05/ { JC ForeGround}
- $AB/ { StoSW ;Save letter on screen.}
- $E2/$F8/ {Next: LOOP LOOPA}
- $EB/$4C/ { JMP Short Done}
- {ForeGround:}
- $3C/$10/ { CMP AL,16 ;if less than 16, then
- change the}
- $73/$07/ { JNC BackGround ;Foreground color.
- otherwise jump.}
- $80/$E4/$F0/ { and AH,0F0H ;Strip off old
- Foreground.}
- $0A/$E0/ { or AH,AL}
- $EB/$F1/ { JMP Next}
- {BackGround:}
- $3C/$18/ { CMP AL,24 ;if less than 24, then
- change the}
- $74/$13/ { JZ NextLine ;background color. if
- exactly 24,}
- $73/$19/ { JNC FlashBittoggle ;then jump down to next
- line.}
- $2C/$10/ { SUB AL,16 ;otherwise jump to
- multiple output}
- $02/$C0/ { ADD AL,AL ;routines.}
- $02/$C0/ { ADD AL,AL}
- $02/$C0/ { ADD AL,AL}
- $02/$C0/ { ADD AL,AL}
- $80/$E4/$8F/ { and AH,8FH ;Strip off old
- background.}
- $0A/$E0/ { or AH,AL}
- $EB/$DA/ { JMP Next}
- {NextLine:}
- $81/$C2/$A0/$00/ { ADD DX,160 ;if equal to 24,}
- $8B/$FA/ { MOV DI,DX ;then jump down to}
- $EB/$D2/ { JMP Next ;the next line.}
- {FlashBittoggle:}
- $3C/$1B/ { CMP AL,27 ;Does user want to toggle
- the blink}
- $72/$07/ { JC MultiOutput ;attribute?}
- $75/$CC/ { JNZ Next}
- $80/$F4/$80/ { xor AH,128 ;Done.}
- $EB/$C7/ { JMP Next}
- {MultiOutput:}
- $3C/$19/ { CMP AL,25 ;Set Z flag if
- multi-space output.}
- $8B/$D9/ { MOV BX,CX ;Save main counter.}
- $AC/ { LODSB ;Get count of number of
- times}
- $8A/$C8/ { MOV CL,AL ;to display Character.}
- $B0/$20/ { MOV AL,32}
- $74/$02/ { JZ StartOutput ;Jump here if displaying
- spaces.}
- $AC/ { LODSB ;otherwise get Character
- to use.}
- $4B/ { DEC BX ;Adjust main counter.}
- {StartOutput:}
- $32/$ED/ { xor CH,CH}
- $41/ { inC CX}
- $F3/$AB/ { REP StoSW}
- $8B/$CB/ { MOV CX,BX}
- $49/ { DEC CX ;Adjust main counter.}
- $E0/$AA/ { LOOPNZ LOOPA ;Loop if anything else to
- do...}
- $1F); {Done: POP DS ;Restore data segment.}
- end; {UNCRUNCH}